import bus from '@/util/bus';

/* eslint no-useless-escape:0 */
const reg = /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/g;

export function isUrl(path) {
  return reg.test(path);
}

export const loading = (flag) => {
  bus.$emit('mainSpinning', flag);
};

/*
 * @description    根据某个字段实现对json数组的排序,省略此字段的放在最后
 * @param   array  要排序的json数组对象
 * @param   field  排序字段（此参数必须为字符串）
 * @return  array  返回排序后的json数组
*/
export const jsonSort = (array, field) => {
  const fieldArr = [];
  const unFieldArr = [];
  // 数组长度小于2 或 没有指定排序字段 或 不是json格式数据
  if (array.length < 2 || !field || typeof array[0] !== 'object') return array;
  array.forEach((ele) => {
    if (ele[field]) {
      fieldArr.push(ele);
    } else {
      unFieldArr.push(ele);
    }
  });
  if (fieldArr.length === 0) {
    return array;
  }
  // 数字类型排序
  if (fieldArr[0][field] && typeof fieldArr[0][field] === 'number') {
    fieldArr.sort((x, y) => x[field] - y[field]);
  }
  // 字符串类型排序
  if (typeof fieldArr[0][field] === 'string') {
    fieldArr.sort((x, y) => x[field].localeCompare(y[field]));
  }
  return fieldArr.concat(unFieldArr);
};
